/***********************************************************************************************************************
 * ############################################# Application AdewebLite #############################################
 * AdewebLite Android est une application permettant de consulter des emplois du temps fournis par l'université UHP
 * avec ou sans connexion internet (informations gardées en mémoire à chaque synchronisation). Et utilisant la web
 * API ADE pour collecter les données.
 * @author Andrianjafintrimo Victor, Zanette Sébastien
 * 
 * Basée sur l'application du même nom, utilisant le flux RSS (données à traiter), de :
 * @author Schnell Michaël, Zanette Sébastien
 * **********************************************************************************************************************
 */

package ade.prime.activity.parameters;

import ade.prime.activity.R;
import ade.prime.model.Project;
import android.app.Activity;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

/**
 * Champ 'ProjectId' du formulaire de création/modification d'un emploi du temps.
 * @author Seb
 */
public class ScheduleProject extends ParameterType {

	public static final String FIELD_ID = "project" ; //$NON-NLS-1$

	private Project project ;
	private LayoutInflater inflater;

	private Button esialButton;
	private Button uhpButton;

	/**
	 * Constructeur.
	 * @param inflater
	 * @param project 
	 */
	public ScheduleProject(LayoutInflater inflater, Project project) {
		super(FIELD_ID) ;
		this.inflater = inflater ;
		this.project = project ;
	}

	/**
	 * Fixe le champ ProjetId à la valeur donnée en paramètre.
	 * @param projectId 
	 */
	public void setProject(Project projectId) {
		this.project = projectId;
	}

	/**
	 * Retourne l'entier associé au bouton choisi par l'utilisateur.
	 * @param view Vue
	 * @return entier associé au bouton choisi par l'utilisateur
	 */
	@Override
	public Project getValue(View view) {
		return this.project ;
	}

	/**
	 * Retourne la vue du champ 'ProjectId' (Boutons).
	 * @param convertView vue du champ dans le formulaire de création/modification
	 * @param parent Vue parente
	 * @return vue du champ 'ProjectId'
	 */
	@Override
	public View getView(View convertView, ViewGroup parent) {
		View v = this.inflater.inflate(R.layout.type_schedule_project_id, null) ;

		this.init(v) ;
		this.listener() ;

		return v ;
	} 

	/**
	 * Initialise la vue.
	 * @param convertView 
	 */
	public void init(View convertView) {
		this.uhpButton   = (Button) (TextView) convertView.findViewById(R.id.uhp) ;
		this.esialButton = (Button) (TextView) convertView.findViewById(R.id.esial) ;

		// Positionne les boutons selon projectId
		//		if (this.project == null) {
		this.uhpButton.setBackgroundColor(Activity.RESULT_OK) ;
		this.esialButton.setBackgroundColor(Activity.RESULT_OK) ;
		//		} else {
		if (this.project != null) {
			switch (this.project) {
			case UHP:
//				this.uhpButton.setBackgroundColor(Activity.RESULT_OK) ;
				this.uhpButton.setClickable(false) ;                   
				this.uhpButton.setSelected(true) ;
				this.esialButton.setClickable(true) ; 
				this.esialButton.setBackgroundColor(Color.GRAY) ;
				break;

			case ESIAL:
//				this.esialButton.setBackgroundColor(Activity.RESULT_OK) ;
				this.esialButton.setClickable(false) ;                   
				this.esialButton.setSelected(true) ;
				this.uhpButton.setClickable(true) ; 
				this.uhpButton.setBackgroundColor(Color.GRAY) ;
				break;
			default:
			}// switch
		}// if
	}

	/**
	 * Attaches les écouteurs aux boutons représentant les projets.
	 */
	public void listener() {         
		this.uhpButton.setOnClickListener(new ProjectListener(
				this.uhpButton, this.esialButton, Project.PROJET_PRINCIPAL, this));
		this.esialButton.setOnClickListener(new ProjectListener(
				this.esialButton, this.uhpButton, Project.ESIAL, this));
	}

	class ProjectListener implements OnClickListener {

		protected Button button ;
		protected Button dualButton ;
		protected Project targetProject ;
		protected ScheduleProject sp ;	

		public ProjectListener(Button button, Button dualButton,
				Project targetProject, ScheduleProject sp) {
			super();
			this.button = button;
			this.dualButton = dualButton;
			this.targetProject = targetProject;
			this.sp = sp;
		}

		@Override
		public void onClick(View v) {
			this.button.setBackgroundColor(Activity.RESULT_OK);
			this.button.setClickable(false);   
			this.button.setSelected(true) ;
			this.sp.setProject(this.targetProject) ;

			this.dualButton.setClickable(true); 
			this.dualButton.setBackgroundColor(Color.GRAY); 
			this.dualButton.setSelected(false) ;
		}
	}

}
